﻿using UnityEngine;

public class FPSCounter : MonoBehaviour
{
    private float deltaTime = 0.0f;
    private float accum = 0.0f; // 累计时间
    private int frames = 0; // 累计帧数
    private float timeLeft = 1.0f; // 剩余时间

    void Update()
    {
        // 累计每一帧的时间
        accum += Time.unscaledDeltaTime;
        frames++;

        // 如果达到更新间隔，更新帧率
        timeLeft -= Time.unscaledDeltaTime;
        if (timeLeft <= 0.0f)
        {
            // 计算平均帧率
            deltaTime = accum / frames;
            timeLeft = 1.0f;
            accum = 0.0f;
            frames = 0;
        }
    }

    void OnGUI()
    {
        // 确保 deltaTime 不为零
        float fps = deltaTime > 0.0f ? 1.0f / deltaTime : 0.0f;

        // 格式化显示帧率
        GUIStyle style = new GUIStyle();
        style.fontSize = 36;
        style.normal.textColor = Color.white;

        // 在屏幕左上角显示帧率
        Rect rect = new Rect(10, 10, 100, 20);
        GUI.Label(rect, $"FPS: {Mathf.Round(fps)}", style);
    }
}
